###################################################################################################
# Legislative Term Limits and Polarization ########################################################
# Michael Olson and Jon Rogowski ##################################################################
###################################################################################################

# This script contains the code required to recreate the results presented in Table C.5 in the 
# supplementary materials.

###################################################################################################
# working directory and packages ##################################################################
###################################################################################################

  #setwd("./termlimits_polarization_analysisdata")

###################################################################################################
# Data ############################################################################################
###################################################################################################

  sle_merge <- read.csv("sle_aggregate.csv")
  
###################################################################################################
# Analysis ########################################################################################
###################################################################################################
  
# Table C.5: Fixed Effects OLS Estimates: Electoral Competition and Term Limits 
  
  five_noint <- felm(close5~house_term_limit
                  +divided_gov
                  +legprofscore+abs_diff
                  |state+year|0|state
                  ,data=sle_merge)
  
  five_int <- felm(close5~house_term_limit*legprofscore
                     +divided_gov
                   +legprofscore+abs_diff
                     |state+year|0|state
                     ,data=sle_merge)
  
  ten_noint <- felm(close10~house_term_limit
                     +divided_gov
                    +legprofscore+abs_diff
                     |state+year|0|state
                     ,data=sle_merge)
  
  ten_int <- felm(close10~house_term_limit*legprofscore
                     +divided_gov
                  +legprofscore+abs_diff
                     |state+year|0|state
                     ,data=sle_merge)
  
  competitive_sg <- stargazer(five_noint,five_int,ten_noint,ten_int,
            add.lines = list(c("State Fixed Effects","\\checkmark","\\checkmark","\\checkmark","\\checkmark"),
                             c("Year Fixed Effects","\\checkmark","\\checkmark","\\checkmark","\\checkmark"),
                             c("Projected $R^2$",round(summary(five_noint)$P.r.squared,3),round(summary(five_int)$P.r.squared,3)
                               ,round(summary(ten_noint)$P.r.squared,3),round(summary(ten_int)$P.r.squared,3))),
            notes.append = FALSE,notes.label = "",
            notes="\\parbox[t]{0.95\\textwidth}{\\footnotesize \\textit{Note}: Entries are linear regression coefficients with 
            standard errors clustered on states in parentheses.  $^{**}$p$<$0.05, $^*$p$<$0.10 (two-tailed test).}",
            omit.stat = c("rsq", "f", "ser","adj.rsq"),
            star.char=c("*","**"),star.cutoffs = c(0.10,0.05),digits=3,digits.extra=0,
            dep.var.labels = c("Share Races Close (5\\%)","Share Races Close (10\\%)"),
            covariate.labels=c("Term Limits","Divided Gov.","ln(Leg. Professionalism)","Party Competitiveness",
                               "Term Limits $\\times$ ln(Leg. Professionalism)"),
            label="close_share",
            table.layout ="-ld-#-t-as-n",table.placement = "!ht",
            title="Term Limits and Close Elections")
  
  cat(competitive_sg, sep = '\n', file = paste(output_path,"competitive.tex",sep=""))
  
# reset working directory
  
  setwd(storewd)
